/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.saep.vista;

import com.saep.logica.LogicaCoformadorLocal;
import com.saep.logica.LogicaEmpresaLocal;
import com.saep.modelo.Coformador;
import com.saep.modelo.Empresa;
import com.saep.modelo.Empresa_;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import org.primefaces.component.commandbutton.CommandButton;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.event.SelectEvent;

/**
 *
 * @author Estudiante
 */
@ManagedBean(name = "coformadorVista")
@RequestScoped
public class coformadorVista {

    @EJB
    private LogicaCoformadorLocal logicaCoformador;

    @EJB
    private LogicaEmpresaLocal logicaEmpresa;

    private InputText txtDocumentoCoformador;
    private InputText txtNombreCoformador;
    private InputText txtTelefonoCoformador;
    private InputText txtNumeroEmpresa;
    private CommandButton btnRegistrarCoformador;
    private CommandButton btnModificarCoformador;
    private CommandButton btnEliminarCoformador;
    private CommandButton btnLimpiarCoformador;
    private List<Coformador> listaCoformador;
    private List<Empresa> listaEmpresas;
    private Coformador selectCoformador;
    private Empresa seleEmpresa;

    public coformadorVista() {
    }

    public LogicaCoformadorLocal getLogicaCoformador() {
        return logicaCoformador;
    }

    public void setLogicaCoformador(LogicaCoformadorLocal logicaCoformador) {
        this.logicaCoformador = logicaCoformador;
    }

    public LogicaEmpresaLocal getLogicaEmpresa() {
        return logicaEmpresa;
    }

    public void setLogicaEmpresa(LogicaEmpresaLocal logicaEmpresa) {
        this.logicaEmpresa = logicaEmpresa;
    }

    public InputText getTxtDocumentoCoformador() {
        return txtDocumentoCoformador;
    }

    public void setTxtDocumentoCoformador(InputText txtDocumentoCoformador) {
        this.txtDocumentoCoformador = txtDocumentoCoformador;
    }

    public InputText getTxtNombreCoformador() {
        return txtNombreCoformador;
    }

    public void setTxtNombreCoformador(InputText txtNombreCoformador) {
        this.txtNombreCoformador = txtNombreCoformador;
    }

    public InputText getTxtTelefonoCoformador() {
        return txtTelefonoCoformador;
    }

    public void setTxtTelefonoCoformador(InputText txtTelefonoCoformador) {
        this.txtTelefonoCoformador = txtTelefonoCoformador;
    }

    public InputText getTxtNumeroEmpresa() {
        return txtNumeroEmpresa;
    }

    public void setTxtNumeroEmpresa(InputText txtNumeroEmpresa) {
        this.txtNumeroEmpresa = txtNumeroEmpresa;
    }

    public CommandButton getBtnRegistrarCoformador() {
        return btnRegistrarCoformador;
    }

    public void setBtnRegistrarCoformador(CommandButton btnRegistrarCoformador) {
        this.btnRegistrarCoformador = btnRegistrarCoformador;
    }

    public CommandButton getBtnModificarCoformador() {
        return btnModificarCoformador;
    }

    public void setBtnModificarCoformador(CommandButton btnModificarCoformador) {
        this.btnModificarCoformador = btnModificarCoformador;
    }

    public CommandButton getBtnEliminarCoformador() {
        return btnEliminarCoformador;
    }

    public void setBtnEliminarCoformador(CommandButton btnEliminarCoformador) {
        this.btnEliminarCoformador = btnEliminarCoformador;
    }

    public CommandButton getBtnLimpiarCoformador() {
        return btnLimpiarCoformador;
    }

    public void setBtnLimpiarCoformador(CommandButton btnLimpiarCoformador) {
        this.btnLimpiarCoformador = btnLimpiarCoformador;
    }

    public List<Coformador> getListaCoformador() {
        if (listaCoformador == null) {
            try {
                listaCoformador = logicaCoformador.consultarCoformador();
            } catch (Exception ex) {
                Logger.getLogger(coformadorVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return listaCoformador;
    }

    public void setListaCoformador(List<Coformador> listaCoformador) {
        this.listaCoformador = listaCoformador;
    }

    public List<Empresa> getListaEmpresas() {
        if (listaEmpresas == null) {
            try {
                listaEmpresas = logicaEmpresa.consultarEmpresas();
            } catch (Exception ex) {
                Logger.getLogger(coformadorVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return listaEmpresas;
    }

    public void setListaEmpresas(List<Empresa> listaEmpresas) {
        this.listaEmpresas = listaEmpresas;
    }

    public Coformador getSelectCoformador() {
        return selectCoformador;
    }

    public void setSelectCoformador(Coformador selectCoformador) {
        this.selectCoformador = selectCoformador;
    }

    public Empresa getSeleEmpresa() {
        return seleEmpresa;
    }

    public void setSeleEmpresa(Empresa seleEmpresa) {
        this.seleEmpresa = seleEmpresa;
    }

    public void funcion_limpiar() {
        txtDocumentoCoformador.setValue("");
        txtNombreCoformador.setValue("");
        txtTelefonoCoformador.setValue("");
        txtNumeroEmpresa.setValue("");
        txtDocumentoCoformador.setDisabled(true);
        btnRegistrarCoformador.setDisabled(false);
        btnModificarCoformador.setDisabled(true);
        btnEliminarCoformador.setDisabled(true);
    }

    public void funcion_registrar() {
        try {
            Coformador c = new Coformador();
            c.setDocumentocoformador(Long.parseLong(txtDocumentoCoformador.getValue().toString()));
            c.setNombrecoformador(txtNombreCoformador.getValue().toString());
            c.setTelefonocoformador(txtTelefonoCoformador.getValue().toString());
            // Consultar Foraneas
            Empresa consultarPorCodigo = logicaEmpresa.consultarPorCodigo(Long.parseLong(txtNumeroEmpresa.getValue().toString()));
            c.setNumeroempresa(consultarPorCodigo);
            logicaCoformador.registrar(c);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Informacion", "El coformador  se ha registrado con exito"));
        } catch (Exception ex) {
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", ex.getMessage()));
            Logger.getLogger(coformadorVista.class.getName()).log(Level.SEVERE, null, ex);
        }
        listaCoformador = null;
    }

    public void funcion_modificar() {
        try {
            Coformador c = new Coformador();
            c.setDocumentocoformador(Long.parseLong(txtDocumentoCoformador.getValue().toString()));
            c.setNombrecoformador(txtNombreCoformador.getValue().toString());
            c.setTelefonocoformador(txtTelefonoCoformador.getValue().toString());
            // Consultar Foraneas
            Empresa consultarPorCodigo = logicaEmpresa.consultarPorCodigo(Long.parseLong(txtNumeroEmpresa.getValue().toString()));
            c.setNumeroempresa(consultarPorCodigo);
            logicaCoformador.modificar(c);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Informacion", "El coformador  se ha modificado con exito"));
        } catch (Exception ex) {
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", ex.getMessage()));
            Logger.getLogger(coformadorVista.class.getName()).log(Level.SEVERE, null, ex);
        }
        listaCoformador = null;
        funcion_limpiar();
    }

    public void funcion_eliminar() {
        try {
            Coformador c = new Coformador();
            c.setDocumentocoformador(Long.parseLong(txtDocumentoCoformador.getValue().toString()));
            logicaCoformador.eliminar(c);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Informacion", "El coformador  se ha eliminado con exito"));
        } catch (Exception ex) {
            Logger.getLogger(coformadorVista.class.getName()).log(Level.SEVERE, null, ex);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", ex.getMessage()));

        }
        listaCoformador = null;
        funcion_limpiar();
    }

    public void funcion_seleccionar(SelectEvent event) {

        Coformador coformadorSeleccionado = (Coformador) event.getObject();
        txtDocumentoCoformador.setValue(coformadorSeleccionado.getDocumentocoformador());
        txtNombreCoformador.setValue(coformadorSeleccionado.getNombrecoformador());
        txtTelefonoCoformador.setValue(coformadorSeleccionado.getTelefonocoformador());
        txtNumeroEmpresa.setValue(coformadorSeleccionado.getNumeroempresa().getNumeroempresa());
        txtDocumentoCoformador.setDisabled(true);
        btnRegistrarCoformador.setDisabled(true);
        btnModificarCoformador.setDisabled(false);
        btnEliminarCoformador.setDisabled(false);

    }

    public void Funcion_selectEmpresa(SelectEvent event) {

        Empresa empresaSeleccionada = (Empresa) event.getObject();
        txtNumeroEmpresa.setValue(empresaSeleccionada.getNumeroempresa());
        txtNumeroEmpresa.setDisabled(true);
    }
}
